package com.union.core.sys.dao;

import java.util.List;
import com.union.core.sys.model.SysModule;

/**
 * DAO接口类: 系统模块
 * filename: SysModuleDao.java
 * project:  CCTR
 * @company Hainan Jowe Technology Ltd
 * @author wangxiuwu
 * @create in 2009-5-21
 * @version 1.0
 */
public interface SysModuleDao {

	public List<SysModule> getModuleList(int moduleTypeId);
	
	/**
	 * 取出模块列表(取出有效1/无效0状态且是否可见的记录)
	 * @param state int
	 * @param ifShow int
	 * @param moduleTypeId int
	 * @return List<ModuleBean>
	 */
	public List<SysModule> getModuleList(int state, int ifShow, int moduleTypeId);
	
	
	/**
	 * 根据链接文件名取出对应的模块ID编号
	 * @param action_file String
	 * @return int
	 */
	public int getModuleId(String action_file);
	
	/**
	 * 添加模块数据
	 * @param moduleBean ModuleBean
	 * @return boolean
	 */
	public boolean addModule(SysModule sysModule);
	
	/**
	 * 2.3 删除模块数据
	 * @param moduleId int
	 * @return boolean
	 */
	public boolean deleteModule(int moduleId);
	
	
	/**
	 * 删除某模块类型下的所有模块
	 * @param moduleTypeId
	 * @return boolean
	 */
	public boolean deleteModuleEx(int moduleTypeId);
	
	
	/**
	 * 修改模块数据
	 * @param moduleBean ModuleBean
	 * @return boolean
	 */
	public boolean modifyModule(SysModule sysModule);
	
	
	/**
	 * 修改模块数据
	 * 修改模块状态
	 * @param moduleId int
	 * @param state int
	 * @return boolean
	 */
	public boolean modifyModule(int moduleId, int state);
	
	
	/**
	 * 修改模块数据
	 * 修改是否可见状态
	 * @param moduleId int
	 * @param ifShow int
	 * @return boolean
	 */
	public boolean modifyModule3(int moduleId, int ifShow);
	
	
	/**
	 * 模块排序
	 * @param ModuleId int
	 * @param Type String
	 * @param ModuleTypeId int
	 * @throws Exception
	 */
	public void orderModule(int ModuleId, String Type, int ModuleTypeId) throws Exception;
	
	/**
	 * 自动获取排列序号
	 * @return int
	 */
	public int getOrderNumByAuto_module();

	
	/**
	 * 提取信息
	 * @param MODULE_ID int
	 * @return ModuleBean
	 */
	public SysModule getModule(int MODULE_ID);

	/**
	 * 取出序号清单
	 * @return List<Integer>
	 * @throws Exception
	 */
	public List<Integer> getOrderNumList_module() throws Exception;
	
	/**
	 * 改变排序号
	 * @param moduleId int
	 * @param newOrderNum int
	 * @return boolean
	 */
	public boolean changeOrderNum_module(int moduleId, int newOrderNum);
}
